
//904.水果成篮
class Solution {
    public:
        int totalFruit(vector<int>& fruits) {
            //还是控制一段区间，保证这一区间内水果种类小于等于2即可，返回最长区间
            unordered_map<int ,int> m;  //存储水果数种类及个数
            int n=fruits.size(),left=0;
            int ret=0;
            for(int right=0;right<n;right++)
            {
                m[fruits[right]]++;
                while(m.size()==3)   //此时说过种类有3种
                {
                    m[fruits[left]]--;
                    if(m[fruits[left]]==0) m.erase(fruits[left]);
                    left++;
                }
    
                ret=max(ret,right-left+1);
            }
            return ret;
        }
    };